热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用户画像|标签数据存储之MySQL真实应用

本文已收录github:https:github.comBigDataScholarTheKingOfBigData,里面有大数据高频考点,

本文已收录github:https://github.com/BigDataScholar/TheKingOfBigData,里面有大数据高频考点,Java一线大厂面试题资源,上百本免费电子书籍,作者亲绘大数据生态圈思维导图…持续更新,欢迎star!



前言

        上一篇文章已经为大家介绍了 Hive 在用户画像的标签数据存储中的具体应用场景,本篇我们来谈谈MySQL的使用!

在这里插入图片描述


原著作者:赵宏田
来源:《用户画像方法论与工程化解决方案》




        MySQL作为关系型数据库,在用户画像中可用于元数据管理、监控预警数据、结果集存储等应用中。下面详细介绍这3个应用场景。


元数据管理

        Hive适合于大数据量的批处理作业,对于量级较小的数据,MySQL具有更快的读写速度。Web端产品读写MySQL数据库会有更快的速度,方便标签的定义、管理。

        在介绍用户画像产品化的时候,我们会介绍元数据录入和查询功能,将相应的数据存储在MySQL中。用户标签的元数据表结构设计也会在之后进行详细的介绍。这里给出了平台标签视图和元数据管理页面。
在这里插入图片描述在这里插入图片描述
        平台标签视图中的标签元数据可以维护在MySQL关系数据库中,便于标签的编辑、查询和管理。


监控预警数据

        MySQL还可用于存储每天对ETL结果的监控信息。从整个画像调度流的关键节点来看,需要监控的环节主要包括对每天标签的产出量、服务层数据同步情况的监控等主要场景。下图展示的是用户画像调度流主要模块。
在这里插入图片描述


1.标签计算数据监控

        主要用于监控每天标签ETL的数据量是否出现异常,如果有异常情况则发出告警邮件,同时暂停后面的ETL任务。


2. 服务层同步数据监控

        服务层一般采用HBaseElasticsearch等作为数据库存储标签数据供线上调用,将标签相关数据从Hive数仓向服务层同步的过程中,有出现差错的可能,因此需要记录相关数据在Hive中的数量及同步到对应服务层后的数量,如果数量不一致则触发告警。

        在对画像的数据监控中,调度流每跑完相应的模块,就将该模块的监控数据插入MySQL中,当校验任务判断达到触发告警阈值时,发送告警邮件,同时中断后续的调度任务。待开发人员解决问题后,可重启后续调度。


3. 结果集存储

        结果集可以用来存储多维透视分析用的标签、圈人服务用的用户标签、当日记录各标签数量,用于校验标签数据是否出现异常。

        有的线上业务系统使用MySQL、Oracle等关系型数据库存储数据,如短信系统、消息推送系统等。在打通画像数据与线上业务系统时,需要考虑将存储在Hive中的用户标签相关数据同步到各业务系统,此时MySQL可用于存储结果集

        Sqoop是一个用来将Hadoop和关系型数据库中的数据相互迁移的工具。它可以将一个关系型数据库(如MySQL、Oracle、PostgreSQL等)中的数据导入Hadoop的HDFS中,也可以将HDFS中的数据导入关系型数据库中

        下面通过一个案例来讲解如何使用Sqoop将Hive中的标签数据迁移到MySQL中。

        电商、保险、金融等公司的客服部门的日常工作内容之一是对目标用户群(如已流失用户、高价值用户等)进行主动外呼,以此召回用户来平台进行购买或复购。这里可以借助用户画像系统实现该功能。

        将Hive中存储的与用户身份相关的数据同步到客服系统中,首先在Hive中建立一张记录用户身份相关信息的表(例如dw.userprofile_userservice_all)。设置日期分区以满足按日期选取当前人群的需要。

CREATE TABLE `dw.userprofile_userservice_all `(
`user_id` string COMMENT 'userid',
`user_sex` string COMMENT 'user_sex',
`city` string COMMENT 'city',
`payid_money` string COMMENT 'payid_money',
`payid_num` string COMMENT 'payid_num',
`latest_product` string COMMENT 'latest_product',
`date` string COMMENT 'date',
`data_status` string COMMENT 'data_status')
COMMENT 'userid 用户客服数据'
PARTITIONED BY ( `data_date` string COMMENT '数据日期')

        在MySQL中建立一张用于接收同步数据的表(userservice_data)。

CREATE TABLE `userservice_data` (`user_id` varchar(128) DEFAULT NULL COMMENT '用户id',`user_sex` varchar(128) NOT NULL COMMENT '用户性别',`city` varchar(128) DEFAULT NULL COMMENT '城市',`payid_money` varchar(128) DEFAULT NULL COMMENT '消费金额',`payid_num` varchar(128) DEFAULT NULL COMMENT '消费次数',`latest_product` varchar(128) DEFAULT NULL COMMENT '最近购买产品',`date` varchar(64) NOT NULL COMMENT '传输日期',`data_status` varchar(64) DEFAULT '0' COMMENT '0:未传输,1:传输中,2:成功,3:失败',PRIMARY KEY (`user_id`),
) ENGINE=InnoDB AUTO_INCREMENT=2261628 DEFAULT CHARSET=utf8 COMMENT='用户客服数据表';

        通过Python脚本调用shell命令,将Hive中的数据同步到MySQL中。执行如下脚本:

# -*- coding: utf-8 -*-
import os
import MySQLdb
import sys
def export_data(hive_tab, data_date):sqoop_command = "sqoop export --connect jdbc:mysql://10.xxx.xxx.xxx:3306/mysql_database --username username --password password --table mysql_table --export-dir hdfs://nameservice1/user/hive/warehouse
/dw.db/"
+ hive_tab + "/data_date=" + data_date + " --input-fields-terminated-by '\001'"os.system(sqoop_command)print(sqoop_command)if __name__ == '__main__':export_data("dw.userprofile_userservice_all", '20181201')

        其中用到了 sqoop 从 Hive 导出数据到 MySQL 的命令:

sqoop export
--connect 指定JDBC连接字符串,包括IP 端口 数据库名称 \
--username JDBC连接的用户名\
--passowrd JDBC连接的密码\
--table 表名\
--export-dir 导出的Hive表, 对应的是HDFS地址 \
--input fileds-terminated-by ‘,’ 分隔符号

        不熟悉Sqoop使用的小伙伴可以去看我的这篇文章《硬核 | Sqoop入门指南》

        同步后 MySQL中的数据如图所示

在这里插入图片描述


小结

        本篇文章主要介绍了在用户画像的业务场景下,MySQL存储相关数据的真实应用场景!后续会陆续为大家介绍 HBase和Elasticsearch,敬请期待!


推荐阅读
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何在wxpython中将matplotlib图表嵌入到自定义窗体中的方法。通过调用FigureCanvasWx类,可以实现在自定义窗体中显示matplotlib图表。同时,还介绍了与此相关的一些类和参数。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 毕设做到后半部分,需要实现将用户在一段时间(比如1天)内产生的新数据导入HDFS的功能,这样数据仓库中的数据才能和数据库中的数据同步在新建了一个PyDev项目后,需要如下操作(拣最 ... [详细]
  • 前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出, ... [详细]
author-avatar
年轻的周末我做主
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有